<?php
 /**
 * 学员上课明细验证
 * @date: 2017年8月1日 下午5:24:57
 * @author: hxz
 */
namespace app\admin\validate;
use think\Validate; 
use app\admin\model\StudentCourse;

class PayLog extends Validate{
    // 验证规则
    protected $rule = [
        ['student_id', 'require|number', '学员必须'],
        ['course_id', 'require|checkCourse', '班级必须|学员未选择该课,请查看'],
        ['hours', 'require|gt:0|checkHour', '操作的课时必须|课时数类型不正确|课时数超出'],
        ['pay_type', 'checkPayType', '充值类型不存在']
    ];  

    // 自定义验证规则
    protected function checkCourse($value,$rule,$data)
    {
        return $this->getStudentCourse($data) ? true : false;
    }
    
    // 自定义验证规则
    protected function checkHour($value,$rule,$data)
    {
        $info = $this->getStudentCourse($data);
        if ($data['hour_type'] === '0') {
            return $info['remain_hours'] >= $data['hours'] ? true : false;
        }
        return true;
    }
    
    // 自定义验证规则
    protected function checkPayType($value,$rule,$data)
    {
        if ($data['hour_type'] === '0') {
            return true;
        }
        $config = \think\Config::get('course_pay_type');
        $res = array_key_exists($data['pay_type'], $config);
        return $res ? true : false;
    }
    
    private function getStudentCourse($data) 
    {
        $where['student_id'] = $data['student_id'];
        $where['course_id'] = $data['course_id'];
        return StudentCourse::get($where);
    }
}